/*
 * Copyright (C) 2009, Edmundo Albuquerque de Souza e Silva.
 *
 * This file may be distributed under the terms of the Q Public License
 * as defined by Trolltech AS of Norway and appearing in the file
 * LICENSE.QPL included in the packaging of this file.
 *
 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 */


package javax.media;

/**
 * Complete.
 * 
 * @author Ken Larson
 * 
 */
public interface Clock
{

	public static final Time RESET = new Time(Long.MAX_VALUE);

	public void setTimeBase(TimeBase master) throws IncompatibleTimeBaseException;

	public void syncStart(Time at);

	public void stop();

	public void setStopTime(Time stopTime);

	public Time getStopTime();

	public void setMediaTime(Time now);

	public Time getMediaTime();

	public long getMediaNanoseconds();

	public Time getSyncTime();

	public TimeBase getTimeBase();

	public Time mapToTimeBase(Time t) throws ClockStoppedException;

	public float getRate();

	public float setRate(float factor);
}
